500
How can I get the number of results after a filter is applied

PROCEDURE OnClick(oList)
	oList:ClearFilter()
RETURN

PROCEDURE OnFilterChange(oList)
	DevOut( "Items.MatchItemCount" )
	DevOut( Transform(oList:Items:MatchItemCount(),"") )
	DevOut( Transform(oList:FormatABC("value < 0 ? `filter applied: ` + abs(value + 1) + ` result(s)` : `no filter`",oList:Items:MatchItemCount()),"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:Click := {|| OnClick(oList)} /*Occurs when the user presses and then releases the left mouse button over the list control.*/
		oList:FilterChange := {|| OnFilterChange(oList)} /*Occurs when filter was changed.*/

		oList:BeginUpdate()
		oList:Columns():Add("Item"):DisplayFilterButton := .T.
		oColumn := oList:Columns():Add("Pos")
			oColumn:AllowSizing := .F.
			oColumn:AllowSort := .F.
			oColumn:Width := 32
			oColumn:FormatColumn := "1 apos ``"
			oColumn:Position := 0
		oItems := oList:Items()
			oItems:Add("Item A")
			oItems:Add("Item B")
			oItems:Add("Item C")
		oList:FilterBarPromptVisible := 1/*exFilterBarPromptVisible*/
		oList:FilterBarPromptPattern := "Item"
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
499
How can I programmatically clear the control's filter
PROCEDURE OnClick(oList)
	oList:ClearFilter()
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:Click := {|| OnClick(oList)} /*Occurs when the user presses and then releases the left mouse button over the list control.*/

		oList:BeginUpdate()
		oList:Columns():Add("Item"):DisplayFilterButton := .T.
		oColumn := oList:Columns():Add("Pos")
			oColumn:AllowSizing := .F.
			oColumn:AllowSort := .F.
			oColumn:Width := 32
			oColumn:FormatColumn := "1 apos ``"
			oColumn:Position := 0
		oItems := oList:Items()
			oItems:Add("Item A")
			oItems:Add("Item B")
			oItems:Add("Item C")
		oList:FilterBarPromptVisible := 1/*exFilterBarPromptVisible*/
		oList:FilterBarPromptPattern := "B"
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
498
Is it possible to prevent closing the control's filter bar, so it is always shown (prompt-combined)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn,oColumn1
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:Columns():Add("Item"):DisplayFilterButton := .T.
		oColumn := oList:Columns():Add("Pos")
			oColumn:AllowSizing := .F.
			oColumn:AllowSort := .F.
			oColumn:Width := 32
			oColumn:FormatColumn := "1 apos ``"
			oColumn:Position := 0
		oItems := oList:Items()
			oItems:Add("Item A")
			oItems:Add("Item B")
			oItems:Add("Item C")
		oList:FilterBarPromptPattern := "B"
		oList:FilterBarPromptVisible := 3/*exFilterBarVisible+exFilterBarPromptVisible*/
		oColumn1 := oList:Columns:Item(0)
			oColumn1:FilterType := 240/*exFilter*/
			oColumn1:Filter := "Item B"
		oList:ApplyFilter()
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
497
Is it possible to prevent closing the control's filter bar, so it is always shown (prompt)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:Columns():Add("Item"):DisplayFilterButton := .T.
		oColumn := oList:Columns():Add("Pos")
			oColumn:AllowSizing := .F.
			oColumn:AllowSort := .F.
			oColumn:Width := 32
			oColumn:FormatColumn := "1 apos ``"
			oColumn:Position := 0
		oItems := oList:Items()
			oItems:Add("Item A")
			oItems:Add("Item B")
			oItems:Add("Item C")
		oList:FilterBarPromptVisible := 1/*exFilterBarPromptVisible*/
		oList:FilterBarPromptPattern := "B"
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
496
Is it possible to prevent closing the control's filter bar, so it is always shown

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn,oColumn1
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:Columns():Add("Item"):DisplayFilterButton := .T.
		oColumn := oList:Columns():Add("Pos")
			oColumn:AllowSizing := .F.
			oColumn:AllowSort := .F.
			oColumn:Width := 32
			oColumn:FormatColumn := "1 apos ``"
			oColumn:Position := 0
		oItems := oList:Items()
			oItems:Add("Item A")
			oItems:Add("Item B")
			oItems:Add("Item C")
		oList:FilterBarCaption := "len(value) = 0 ? `<fgcolor=808080>no filter` : value"
		oList:FilterBarPromptVisible := 2/*exFilterBarVisible*/
		oColumn1 := oList:Columns:Item(0)
			oColumn1:FilterType := 240/*exFilter*/
			oColumn1:Filter := "Item B"
		oList:ApplyFilter()
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
495
How can I find if the control is running in DPI mode
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		DevOut( Transform(oList:FormatABC("dpi = 1 ? `normal/stretch mode` : `dpi mode`"),"") )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
494
I am using single selection, the question is if possible to select an item only when the user releases the mouse, as currently it selects the item as soon as the user clicks it
PROCEDURE OnSelectionChanged(oList)
	DevOut( "SelectionChanged" )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:SelectionChanged := {|| OnSelectionChanged(oList)} /*Fired after a new item is selected.*/

		oList:BeginUpdate()
		oList:FreezeEvents(.T.)
		oList:SingleSel := .T.
		oList:SelectOnRelease := .T.
		oList:Columns():Add("Column"):FormatColumn := "1 apos `A-Z`"
		oItems := oList:Items()
			oItems:Add("")
			oItems:SetProperty("SelectItem",oItems:Add(""),.T.)
			oItems:Add("")
		oList:FreezeEvents(.F.)
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
493
Is it possible to select nothing
PROCEDURE OnSelectionChanged(oList)
	DevOut( "SelectionChanged" )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:SelectionChanged := {|| OnSelectionChanged(oList)} /*Fired after a new item is selected.*/

		oList:BeginUpdate()
		oList:FreezeEvents(.T.)
		oList:AllowSelectNothing := .T.
		oList:Columns():Add("Column"):FormatColumn := "1 apos `A-Z`"
		oItems := oList:Items()
			oItems:Add("")
			oItems:SetProperty("SelectItem",oItems:Add(""),.T.)
			oItems:Add("")
		oList:FreezeEvents(.F.)
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
492
How do I change the drop down filter icon/button (black)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oAppearance
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oAppearance := oList:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABXUIQAAYAQGKIcBiAKBQAGYBIJDEMgzDDAUBjKKocQTC4AIQjCK4JDKHYJRpHEZyCA8EhqGASRAFUQBYiWE4oSpLABQaK0ZwIGyRIrkGQgQgmPYDSDNU4zVIEEglBI0TDNczhNDENgtGYaJqHIYpZBcM40TKkEZoSIITZcRrOEBiRL1S0RBhGcRUHZlWzdN64LhuK47UrWdD/XhdVzXRbjfz1Oq+bxve48Br7A5yYThdr4LhOFQ3RjIL4xbIcUwGe6VZhjOLZXjmO49T69HTtOCYBEBA")
		oList:SetProperty("Background",32/*exCursorHoverColumn*/,-1)
		oList:SetProperty("Background",0/*exHeaderFilterBarButton*/,0x1000000)
		oList:SetProperty("Background",26/*exBackColorFilter*/,AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,1 } )  , .F. ))
		oList:SetProperty("Background",27/*exForeColorFilter*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oList:SetProperty("Description",25/*exFilterBarExclude*/,"<bgcolor 0><fgcolor ffffff> Exclude </fgcolor></bgcolor>")
		oList:HeaderAppearance := 0/*None2*/
		oList:SetProperty("BackColorHeader",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
		oList:SetProperty("ForeColorHeader",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oList:HeaderVisible := .T.
		oList:SetProperty("BackColorLevelHeader",oList:BackColor())
		oColumn := oList:Columns():Add("Filter")
			oColumn:FilterList := 8448/*exShowExclude+exShowCheckBox*/
			oColumn:DisplayFilterButton := .T.
			oColumn:AllowSort := .F.
			oColumn:AllowDragging := .F.
		oItems := oList:Items()
			oItems:Add("One")
			oItems:Add("Two")
			oItems:Add("Three")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
491
How do I change the drop down filter icon/button (white)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oAppearance
	LOCAL oColumn
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oAppearance := oList:VisualAppearance()
			oAppearance:Add(2,"gBFLBCJwBAEHhEJAAEhABX8GACAADACAxSDEMQBQKAAzQFAYbhgHCGAAGQaBUgmFgAQhFcZQSKUOQTDKNYykCIRSDUJYkSZEIyjBI8ExXFqNACkGKwYgmNYiTLAcgANJ0WBaGIZJ4gOT5fDKMoEDRRYADFCscwxJybQAqGQKKb+VgAVY/cTyBIAEQSKA0TDOQ5TSKWB4JPZQRBEbZMNBtBIUJquKaqShdQJCU5FdY3Xblez9P7AMBwLFEC4NQ8YNYuPhjR4dRTIMhvVAsUArFh8Zg9GZZFjmDIDT4ydBLTQwcyVIKnP5qOa6XbmPoCQDYKxZHYxPzVDa3axuL76dqCAT7XrXNy1TbNRrzQKfcJqfCbdw2YaDZLOOT3fjuI4hhKaRzFAHJ+jYQ4xHuY4gHuGIXGeExqC8Tp6C+PoEm+G5ImycRgh0XwvDGa5rgOeoejyXwnFeQp2mkf5ClgBB9gCWIYAwfYAEKV58mkdwOggNArgOXY2EWLoDkKOA0mg" +;
		"bhOGgZApgaSBIHWSYHSmbApgYThmESZYJkIeIkgeCpfliLIHgpMIcmUYYYmODAlg2SI4mWfRfGOEguDcCRjFYAJihCQhJBSDoRmONgKEcI4kFCEJhhOVYTmYnAlEAQhWBMJYJGYWoWmWSR2F6F5lnkWAQhUAgpEieRWEuSYkjWGpmkmNhuhuZwJkYcocmaaYkjyEhngnUA6lEFAlAEgI=")
			oAppearance:Add(1,"CP:2 -14 -4 -2 4")
		oList:SetProperty("Background",0/*exHeaderFilterBarButton*/,0x1000000)
		oList:SetProperty("Background",32/*exCursorHoverColumn*/,oList:BackColor())
		oList:HeaderAppearance := 0/*None2*/
		oList:SetProperty("BackColorHeader",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oList:HeaderVisible := .T.
		oList:HeaderHeight := 24
		oList:SetProperty("BackColorLevelHeader",oList:BackColor())
		oColumn := oList:Columns():Add("Filter")
			oColumn:DisplayFilterButton := .T.
			oColumn:AllowSort := .F.
			oColumn:AllowDragging := .F.
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
490
Can I display the column's multiple-lines caption vertically oriented (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn,oColumn1,oColumn2
	LOCAL oColumns
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:HeaderHeight := 48
		oList:ColumnAutoResize := .T.
		oColumns := oList:Columns()
			oColumns:Add("And others ...")
			oColumn := oColumns:Add("")
				oColumn:HTMLCaption := "First Column"
				oColumn:HeaderVertical := .T.
				oColumn:Width := 36
				oColumn:AllowSizing := .F.
				oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
				oColumn:SetProperty("Def",48/*exCellPaddingLeft*/,8)
				oColumn:Position := 0
			oColumn1 := oColumns:Add("")
				oColumn1:HTMLCaption := "<c><b>Second Column"
				oColumn1:HeaderVertical := .T.
				oColumn1:Width := 36
				oColumn1:AllowSizing := .F.
				oColumn1:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
				oColumn1:SetProperty("Def",48/*exCellPaddingLeft*/,8)
				oColumn1:Position := 1
			oColumn2 := oColumns:Add("")
				oColumn2:HTMLCaption := "<r>Third Column"
				oColumn2:HeaderVertical := .T.
				oColumn2:Width := 36
				oColumn2:AllowSizing := .F.
				oColumn2:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
				oColumn2:SetProperty("Def",48/*exCellPaddingLeft*/,8)
				oColumn2:Position := 2
		oItems := oList:Items()
			oItems:SetProperty("CellState",oItems:Add("Item 1"),3,1)
			oItems:SetProperty("CellState",oItems:Add("Item 2"),2,1)
			oItems:SetProperty("CellState",oItems:Add("Item 3"),1,1)
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
489
Can I display the column's multiple-lines caption vertically oriented (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn,oColumn1,oColumn2
	LOCAL oColumns
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:HeaderHeight := 48
		oList:HeaderSingleLine := .F.
		oList:ColumnAutoResize := .T.
		oColumns := oList:Columns()
			oColumns:Add("And others ...")
			oColumn := oColumns:Add("First Column")
				oColumn:HeaderVertical := .T.
				oColumn:Width := 36
				oColumn:AllowSizing := .F.
				oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
				oColumn:SetProperty("Def",48/*exCellPaddingLeft*/,8)
				oColumn:Position := 0
			oColumn1 := oColumns:Add("Second Column")
				oColumn1:HeaderBold := .T.
				oColumn1:HeaderVertical := .T.
				oColumn1:Width := 36
				oColumn1:AllowSizing := .F.
				oColumn1:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
				oColumn1:SetProperty("Def",48/*exCellPaddingLeft*/,8)
				oColumn1:Position := 1
			oColumn2 := oColumns:Add("Third Column")
				oColumn2:HeaderVertical := .T.
				oColumn2:Width := 36
				oColumn2:AllowSizing := .F.
				oColumn2:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
				oColumn2:SetProperty("Def",48/*exCellPaddingLeft*/,8)
				oColumn2:Position := 2
		oItems := oList:Items()
			oItems:SetProperty("CellState",oItems:Add("Item 1"),3,1)
			oItems:SetProperty("CellState",oItems:Add("Item 2"),2,1)
			oItems:SetProperty("CellState",oItems:Add("Item 3"),1,1)
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
488
Can I display the column's caption vertically oriented (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn,oColumn1,oColumn2
	LOCAL oColumns
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:HeaderHeight := 48
		oList:ColumnAutoResize := .T.
		oColumns := oList:Columns()
			oColumns:Add("And others ...")
			oColumn := oColumns:Add("")
				oColumn:HTMLCaption := "First"
				oColumn:HeaderVertical := .T.
				oColumn:Width := 20
				oColumn:AllowSizing := .F.
				oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
				oColumn:Position := 0
			oColumn1 := oColumns:Add("")
				oColumn1:HTMLCaption := "<c><b>Second"
				oColumn1:HeaderVertical := .T.
				oColumn1:Width := 20
				oColumn1:AllowSizing := .F.
				oColumn1:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
				oColumn1:Position := 1
			oColumn2 := oColumns:Add("")
				oColumn2:HTMLCaption := "<r>Third"
				oColumn2:HeaderVertical := .T.
				oColumn2:Width := 20
				oColumn2:AllowSizing := .F.
				oColumn2:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
				oColumn2:Position := 2
		oItems := oList:Items()
			oItems:SetProperty("CellState",oItems:Add("Item 1"),3,1)
			oItems:SetProperty("CellState",oItems:Add("Item 2"),2,1)
			oItems:SetProperty("CellState",oItems:Add("Item 3"),1,1)
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
487
Can I display the column's caption vertically oriented (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn,oColumn1,oColumn2
	LOCAL oColumns
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:HeaderHeight := 48
		oList:ColumnAutoResize := .T.
		oColumns := oList:Columns()
			oColumns:Add("And others ...")
			oColumn := oColumns:Add("First")
				oColumn:HeaderVertical := .T.
				oColumn:Width := 20
				oColumn:AllowSizing := .F.
				oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
				oColumn:Position := 0
			oColumn1 := oColumns:Add("Second")
				oColumn1:HeaderBold := .T.
				oColumn1:HeaderVertical := .T.
				oColumn1:Width := 20
				oColumn1:AllowSizing := .F.
				oColumn1:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
				oColumn1:Position := 1
			oColumn2 := oColumns:Add("Third")
				oColumn2:HeaderVertical := .T.
				oColumn2:Width := 20
				oColumn2:AllowSizing := .F.
				oColumn2:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
				oColumn2:Position := 2
		oItems := oList:Items()
			oItems:SetProperty("CellState",oItems:Add("Item 1"),3,1)
			oItems:SetProperty("CellState",oItems:Add("Item 2"),2,1)
			oItems:SetProperty("CellState",oItems:Add("Item 3"),1,1)
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
486
How do I get sorted the column as string, numeric, date, date and time. Also how can it be applied to drop down filter panel

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn,oColumn1,oColumn2,oColumn3,oColumn4
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oColumn := oList:Columns():Add("Date")
			oColumn:SortType := 2/*SortDate*/
			oColumn:DisplayFilterButton := .T.
			oColumn:DisplayFilterPattern := .F.
			oColumn:DisplayFilterDate := .T.
			oColumn:FilterList := 1296/*exShowFocusItem+exShowCheckBox+exSortItemsDesc*/
		oColumn1 := oList:Columns():Add("DateTime")
			oColumn1:SortType := 3/*SortDateTime*/
			oColumn1:DisplayFilterButton := .T.
			oColumn1:DisplayFilterPattern := .F.
			oColumn1:FilterList := 1296/*exShowFocusItem+exShowCheckBox+exSortItemsDesc*/
		oColumn2 := oList:Columns():Add("Time")
			oColumn2:SortType := 4/*SortTime*/
			oColumn2:DisplayFilterButton := .T.
			oColumn2:DisplayFilterPattern := .F.
			oColumn2:FilterList := 1296/*exShowFocusItem+exShowCheckBox+exSortItemsDesc*/
			oColumn2:FormatColumn := "time(value)"
		oColumn3 := oList:Columns():Add("Numeric")
			oColumn3:SortType := 1/*SortNumeric*/
			oColumn3:DisplayFilterButton := .T.
			oColumn3:FilterList := 1296/*exShowFocusItem+exShowCheckBox+exSortItemsDesc*/
		oColumn4 := oList:Columns():Add("String")
			oColumn4:DisplayFilterButton := .T.
			oColumn4:FilterList := 1296/*exShowFocusItem+exShowCheckBox+exSortItemsDesc*/
		oItems := oList:Items()
			h := oItems:Add("01/27/2010")
			oItems:SetProperty("Caption",h,1,"01/27/2010 10:00:00")
			oItems:SetProperty("Caption",h,2,oItems:Caption(h,1))
			oItems:SetProperty("Caption",h,3,1)
			oItems:SetProperty("Caption",h,4,oItems:Caption(h,3))
			h := oItems:Add("01/27/2011")
			oItems:SetProperty("Caption",h,1,"01/27/2011 09:00:00")
			oItems:SetProperty("Caption",h,2,oItems:Caption(h,1))
			oItems:SetProperty("Caption",h,3,11)
			oItems:SetProperty("Caption",h,4,oItems:Caption(h,3))
			h := oItems:Add("11/02/2010")
			oItems:SetProperty("Caption",h,1,"11/02/2010 09:00:00")
			oItems:SetProperty("Caption",h,2,oItems:Caption(h,1))
			oItems:SetProperty("Caption",h,3,2)
			oItems:SetProperty("Caption",h,4,oItems:Caption(h,3))
		oList:Columns:Item("DateTime"):DisplayFilterDate := .F.
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
485
How can I get ride / hide the image being dragged by OLE Drag and Drop
PROCEDURE OnOLEStartDrag(oList,Data,AllowedEffects)
	/*Data.SetData("data to drag")*/
	AllowedEffects := 1
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:OLEStartDrag := {|Data,AllowedEffects| OnOLEStartDrag(oList,Data,AllowedEffects)} /*Occurs when the OLEDrag method is called.*/

		oList:OLEDropMode := 1/*exOLEDropManual*/
		oList:SetProperty("Background",34/*exDragDropAfter*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oList:Columns():Add("Default")
		oItems := oList:Items()
			oItems:Add("Item 1")
			oItems:Add("Item 2")
			oItems:Add("Item 3")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
484
Is there an event that fires on the exList control when the order of items in the list is changed via dragging
PROCEDURE OnAllowAutoDrag(oList,Item,InsertA,InsertB,Cancel)
	LOCAL oItems
	oItems := oList:Items()
		DevOut( "After" )
		DevOut( Transform(oItems:Caption(InsertA,0),"") )
		DevOut( "Before" )
		DevOut( Transform(oItems:Caption(InsertB,0),"") )
	Cancel := .T.
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:AllowAutoDrag := {|Item,InsertA,InsertB,Cancel| OnAllowAutoDrag(oList,Item,InsertA,InsertB,Cancel)} /*Occurs when the user drags the item between InsertA and InsertB.*/

		oList:BeginUpdate()
		oList:AutoDrag := 1/*exAutoDragPosition*/
		oList:Columns():Add("Task")
		oItems := oList:Items()
			oItems:Add("Item 1")
			oItems:Add("Item 2")
			oItems:Add("Item 3")
			oItems:Add("Item 4")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
483
How can I export checked items only

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumns
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oColumns := oList:Columns()
			oColumns:Add("C1"):SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
			oColumns:Add("C2"):FormatColumn := "1 index `A-Z`"
			oColumns:Add("C3"):FormatColumn := "100 index ``"
		oItems := oList:Items()
			oItems:Add("Item 1")
			oItems:SetProperty("CellState",oItems:Add("Item 2"),0,1)
			oItems:SetProperty("CellState",oItems:Add("Item 3"),0,1)
		oList:EndUpdate()
		DevOut( "Export CSV Checked Items Only:" )
		DevOut( Transform(oList:Export("","chk"),"") )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
482
How can I export a hidden column

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn,oColumn1
	LOCAL oColumns
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oColumns := oList:Columns()
			oColumns:Add("C1")
			oColumn := oColumns:Add("C2")
				oColumn:FormatColumn := "1 index `A-Z`"
				oColumn:Visible := .F.
			oColumn1 := oColumns:Add("C3")
				oColumn1:FormatColumn := "100 index ``"
				oColumn1:Visible := .F.
		oItems := oList:Items()
			oItems:Add("Item 1")
			oItems:Add("Item 2")
			oItems:Add("Item 3")
		oList:EndUpdate()
		DevOut( "Export CSV Hidden Columns (1,2):" )
		DevOut( Transform(oList:Export("","|1,2"),"") )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
481
Is it possible to have a different alignment for parts of the cell's caption

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:DrawGridLines := -1/*exAllLines*/
		oColumn := oList:Columns():Add("Default")
			oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
		oItems := oList:Items()
			oItems:SetProperty("CellHAlignment",oItems:Add("all-left"),0,0/*LeftAlignment*/)
			oItems:SetProperty("CellHAlignment",oItems:Add("all-center"),0,1/*CenterAlignment*/)
			oItems:SetProperty("CellHAlignment",oItems:Add("all-right"),0,2/*RightAlignment*/)
			h := oItems:Add("left<c>center<r>right")
			oItems:SetProperty("CaptionFormat",h,0,1/*exHTML*/)
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
480
I have a column with Def(exCellSingleLine) property on False, word-wrapping, and I am wondering if possible to update the column's content while user is resizing it
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn,oColumn1
	LOCAL oColumns
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oColumns := oList:Columns()
			oColumn := oColumns:Add("MultipleLine")
				oColumn:Width := 32
				oColumn:SetProperty("Def",16/*exCellSingleLine*/,.F.)
				oColumn:SetProperty("Def",64/*exColumnResizeContiguously*/,.T.)
			oColumn1 := oColumns:Add("SingleLine")
				oColumn1:SetProperty("Def",16/*exCellSingleLine*/,.F.)
		oItems := oList:Items()
			oItems:SetProperty("Caption",oItems:Add("This is a bit of long text that should break the line"),1,"This is a bit of long text that should break the line")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
479
How can I hide the cell's tooltip
PROCEDURE OnToolTip(oList,ItemIndex,ColIndex,Visible,X,Y,CX,CY)
	DevOut( "The tooltip is about to be shown" )
	Visible := .F.
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:ToolTip := {|ItemIndex,ColIndex,Visible,X,Y,CX,CY| OnToolTip(oList,ItemIndex,ColIndex,Visible,X,Y,CX,CY)} /*Fired when the control prepares the object's tooltip.*/

		oList:BeginUpdate()
		oList:Columns():Add("Def")
		oItems := oList:Items()
			oItems:SetProperty("CellToolTip",oItems:Add("Item 1"),0,"This is a bit of text that's shown when cursor hovers the item.")
			oItems:SetProperty("CellToolTip",oItems:Add("Item 2"),0,"This is a bit of text that's shown when cursor hovers the item.")
			oItems:SetProperty("CellToolTip",oItems:Add("Item 3"),0,"This is a bit of text that's shown when cursor hovers the item.")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
478
How can I find out if an item is selected or unselected
PROCEDURE OnMouseMove(oList,Button,Shift,X,Y)
	LOCAL oItems
	LOCAL i
	i := oList:ItemFromPoint(-1,-1,c,hit)
	oItems := oList:Items()
		DevOut( Transform(oItems:SelectItem(i),"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:MouseMove := {|Button,Shift,X,Y| OnMouseMove(oList,Button,Shift,X,Y)} /*Occurs when the user moves the mouse.*/

		oList:Columns():Add("Header")
		oItems := oList:Items()
			oItems:Add("Item 1")
			oItems:SetProperty("SelectItem",oItems:Add("Item 2"),.T.)
			oItems:Add("Item 3")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
477
How do I sort the index column as numeric

PROCEDURE OnAddItem(oList,Item)
	LOCAL oItems
	oItems := oList:Items()
		oItems:SetProperty("CellData",Item,1,Item)
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn,oColumn1
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:AddItem := {|Item| OnAddItem(oList,Item)} /*Occurs after a new Item is inserted to Items collection.*/

		oList:BeginUpdate()
		oList:DrawGridLines := -1/*exAllLines*/
		oList:ColumnAutoResize := .T.
		oList:ShowFocusRect := .F.
		oColumn := oList:Columns():Add("Next")
			oColumn:SetProperty("Def",48/*exCellPaddingLeft*/,4)
			oColumn:SetProperty("Def",52/*exHeaderPaddingLeft*/,4)
		oColumn1 := oList:Columns():Add("Index")
			oColumn1:AllowSizing := .F.
			oColumn1:Width := 48
			oColumn1:FormatColumn := "(((0 := (1 index ``)) mod 3) case ( default: ``; 0 : `<r><fgcolor=B0B0B0>`; 1: ``; 2 : `<c><fgcolor=808080>` )) + str(=:0)"
			oColumn1:SetProperty("Def",17/*exCaptionFormat*/,1)
			oColumn1:SortType := 5/*SortUserData*/
			oColumn1:Position := 0
		oItems := oList:Items()
			oItems:Add("Item 1")
			oItems:Add("Item 2")
			oItems:Add("Item 3")
			oItems:Add("Item 4")
			oItems:Add("Item 5")
			oItems:Add("Item 6")
			oItems:Add("Item 7")
			oItems:Add("Item 8")
			oItems:Add("Item 9")
			oItems:Add("Item 10")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
476
How can I put icons/images into buttons

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:ColumnAutoResize := .T.
		oList:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oColumn := oList:Columns():Add("C+B")
			oColumn:AllowSizing := .F.
			oColumn:Width := 48
			oColumn:FormatColumn := "` <img>` + ( 1 + (1 index ``) mod 3 ) + `</img> `"
			oColumn:SetProperty("Def",17/*exCaptionFormat*/,1)
			oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
			oColumn:SetProperty("Def",2/*exCellHasButton*/,.T.)
			oColumn:SetProperty("Def",3/*exCellHasButton+exCellHasRadioButton*/,.T.)
		oList:Columns():Add("")
		oList:DrawGridLines := 2/*exVLines*/
		oList:DefaultItemHeight := 20
		oItems := oList:Items()
			oItems:Add("")
			oItems:Add("")
			oItems:Add("")
			oItems:Add("")
			oItems:Add("")
			oItems:Add("")
			oItems:Add("")
			oItems:Add("")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
475
Is it possible to have a CheckBox and Button TOGETHER on all cells in a column

PROCEDURE OnCellButtonClick(oList,Item,ColIndex)
	DevOut( "CellButtonClick" )
	DevOut( Transform(Item,"") )
RETURN

PROCEDURE OnCellStateChanged(oList,Item,ColIndex)
	DevOut( "CellStateChanged" )
	DevOut( Transform(Item,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn,oColumn1
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:CellButtonClick := {|Item,ColIndex| OnCellButtonClick(oList,Item,ColIndex)} /*Fired after the user clicks the cell's button.*/
		oList:CellStateChanged := {|Item,ColIndex| OnCellStateChanged(oList,Item,ColIndex)} /*Fired after cell's state is changed.*/

		oList:BeginUpdate()
		oList:ColumnAutoResize := .T.
		oColumn := oList:Columns():Add("")
			oColumn:AllowSizing := .F.
			oColumn:Width := 32
			oColumn:FormatColumn := "1 index ``"
		oColumn1 := oList:Columns():Add("Def")
			oColumn1:AllowSizing := .F.
			oColumn1:Width := 48
			oColumn1:FormatColumn := "`     `"
			oColumn1:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
			oColumn1:SetProperty("Def",2/*exCellHasButton*/,.T.)
			oColumn1:SetProperty("Def",3/*exCellHasButton+exCellHasRadioButton*/,.T.)
		oList:Columns():Add("")
		oItems := oList:Items()
			oItems:Add("")
			oItems:Add("")
			oItems:Add("")
			oItems:Add("")
			oItems:Add("")
			oItems:Add("")
			oItems:Add("")
			oItems:Add("")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
474
Does filtering work with umlauts / accents characters
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oColumn := oList:Columns():Add("Names")
			oColumn:DisplayFilterButton := .T.
			oColumn:FilterType := 3/*exPattern*/
		oItems := oList:Items()
			oItems:Add("Mantel")
			oItems:Add("Mechanik")
			oItems:Add("Motor")
			oItems:Add("Murks")
			oItems:Add("Märchen")
			oItems:Add("Möhren")
			oItems:Add("Mühle")
			oItems:Add("Sérigraphie")
		oList:Columns:Item(0):Filter := "*ä*"
		oList:ApplyFilter()
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
473
Can I set the search box / filterbarprompt to invisible, so I can use my own input and *string* via VBA
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumns
	LOCAL oItems
	LOCAL oList
	LOCAL h0

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:ColumnAutoResize := .T.
		oList:ContinueColumnScroll := .F.
		oList:MarkSearchColumn := .F.
		oList:SearchColumnIndex := 1
		oList:FilterBarHeight := 0
		oList:FilterBarPromptVisible := -1/*0xffffd0e8+exFilterBarTop+exFilterBarCompact+exFilterBarShowCloseOnRight+exFilterBarShowCloseIfRequired+exFilterBarToggle+exFilterBarSingleLine+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oColumns := oList:Columns()
			oColumns:Add("Name"):Width := 96
			oColumns:Add("Title"):Width := 96
			oColumns:Add("City")
		oItems := oList:Items()
			h0 := oItems:Add("Nancy Davolio")
			oItems:SetProperty("Caption",h0,1,"Sales Representative")
			oItems:SetProperty("Caption",h0,2,"Seattle")
			h0 := oItems:Add("Andrew Fuller")
			oItems:SetProperty("Caption",h0,1,"Vice President, Sales")
			oItems:SetProperty("Caption",h0,2,"Tacoma")
			oItems:SetProperty("SelectItem",h0,.T.)
			h0 := oItems:Add("Janet Leverling")
			oItems:SetProperty("Caption",h0,1,"Sales Representative")
			oItems:SetProperty("Caption",h0,2,"Kirkland")
			h0 := oItems:Add("Margaret Peacock")
			oItems:SetProperty("Caption",h0,1,"Sales Representative")
			oItems:SetProperty("Caption",h0,2,"Redmond")
			h0 := oItems:Add("Steven Buchanan")
			oItems:SetProperty("Caption",h0,1,"Sales Manager")
			oItems:SetProperty("Caption",h0,2,"London")
			h0 := oItems:Add("Michael Suyama")
			oItems:SetProperty("Caption",h0,1,"Sales Representative")
			oItems:SetProperty("Caption",h0,2,"London")
			h0 := oItems:Add("Robert King")
			oItems:SetProperty("Caption",h0,1,"Sales Representative")
			oItems:SetProperty("Caption",h0,2,"London")
			h0 := oItems:Add("Laura Callahan")
			oItems:SetProperty("Caption",h0,1,"Inside Sales Coordinator")
			oItems:SetProperty("Caption",h0,2,"Seattle")
			h0 := oItems:Add("Anne Dodsworth")
			oItems:SetProperty("Caption",h0,1,"Sales Representative")
			oItems:SetProperty("Caption",h0,2,"London")
		oList:FilterBarPromptPattern := "London"
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
472
How can I align captions of items with checkbox, with items with no checkbox

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:Columns():Add("Default")
		oItems := oList:Items()
			oItems:SetProperty("CellImages",oItems:Add(0),0,"1")
			oItems:SetProperty("CellHasCheckBox",oItems:Add(1),0,.T.)
			oItems:SetProperty("CellImages",oItems:Add(2),0,"1")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
471
How do I programmatically scroll the control (method 2)
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oList
	LOCAL rs

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:ColumnAutoResize := .F.
		oList:ContinueColumnScroll := .F.
		rs := CreateObject("ADOR.Recordset")
			rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExList\Sample\Access\SAMPLE.ACCDB",3/*adOpenStatic*/,3/*adLockOptimistic*/)
		oList:DataSource := rs
		oList:Layout := "vscroll = 10"
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
470
How do I programmatically scroll the control (method 1)
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oList
	LOCAL rs

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:ColumnAutoResize := .F.
		oList:ContinueColumnScroll := .F.
		rs := CreateObject("ADOR.Recordset")
			rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExList\Sample\Access\SAMPLE.ACCDB",3/*adOpenStatic*/,3/*adLockOptimistic*/)
		oList:DataSource := rs
		oList:SetProperty("ScrollPos",.T.,10)
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
469
How can I decode the Layout property
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumns
	LOCAL oPrint
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oColumns := oList:Columns()
			oColumns:Add("C1")
			oColumns:Add("C2"):Position := 1
		oItems := oList:Items()
			oItems:SetProperty("Caption",oItems:Add("SubItem 1.1"),1,"SubItem 1.2")
			oItems:SetProperty("Caption",oItems:Add("SubItem 2.1"),1,"SubItem 2.2")
		oList:Columns:Item("C2"):SortOrder := 2/*SortDescending*/
		oList:EndUpdate()
		DevOut( "Encoded:" )
		DevOut( oList:Layout() )
		oPrint := CreateObject("Exontrol.Print")
			DevOut( "Decoded: " )
			DevOut( oPrint:Decode64TextW(oList:Layout()) )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
468
Does the title of the cell's tooltip supports HTML format

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oColumn := oList:Columns():Add("")
			oColumn:Caption := ""
			oColumn:HTMLCaption := "Column"
		oItems := oList:Items()
			h := oItems:Add("tooltip w/h different title")
			oItems:SetProperty("CellToolTip",h,0,"<c><b><fgcolor=FF0000>Title</fgcolor></b><br>This is bit of text that's shown when the user hovers the cell. This shows the title centered with a different color.")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
467
How do I specify a different title for the cell's tooltip

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oColumn := oList:Columns():Add("")
			oColumn:Caption := "This is the title"
			oColumn:HTMLCaption := "Column"
		oItems := oList:Items()
			h := oItems:Add("tooltip w/h different title")
			oItems:SetProperty("CellToolTip",h,0,"This is bit of text that's shown when the user hovers the cell.")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
466
The cell's tooltip displays the column's caption in its title. How can I get ride of that

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oColumns
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oColumns := oList:Columns()
			oColumns:Add("C1")
			oColumns:Add("C2")
		oItems := oList:Items()
			h := oItems:Add("tooltip w/h caption")
			oItems:SetProperty("CellToolTip",h,0,"This is bit of text that's shown when the user hovers the cell. This shows the column's caption in the title.")
			oItems:SetProperty("Caption",h,1,"tooltip no caption")
			oItems:SetProperty("CellToolTip",h,1,"This is bit of text that's shown when the user hovers the cell. This shows no column's caption in the title.")
		oColumn := oList:Columns():Item("C2")
			oColumn:HTMLCaption := oColumn:Caption()
			oColumn:Caption := ""
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
465
When you click the cell it takes some time before the edit box appears, can this delay be removed

PROCEDURE OnClick(oList)
	LOCAL h
	h := oList:ItemFromPoint(-1,-1,ColIndex,HitTestInfo)
	oList:Items():Edit(h,ColIndex)
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:Click := {|| OnClick(oList)} /*Occurs when the user presses and then releases the left mouse button over the list control.*/

		oList:AllowEdit := .T.
		oList:Columns():Add("Default")
		oItems := oList:Items()
			oItems:Add("")
			oItems:Add("Edit")
			oItems:Add("")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
464
How can I programmatically show the column's filter

PROCEDURE OnRClick(oList)
	LOCAL i
	i := oList:ItemFromPoint(-1,-1,c,hit)
	oList:Columns:Item(c):ShowFilter("-1,-1,128,128")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:RClick := {|| OnRClick(oList)} /*Fired when right mouse button is clicked*/

		oList:BeginUpdate()
		oList:ShowFocusRect := .F.
		oColumn := oList:Columns():Add("Items ")
			oColumn:DisplayFilterPattern := .F.
			oColumn:FilterList := 9472/*exShowExclude+exShowFocusItem+exShowCheckBox*/
		oItems := oList:Items()
			oItems:Add("Item 1")
			oItems:Add("Item 2")
			oItems:Add("Item 3")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
463
I want to be able to click on one of the headers, and sort by other column. How can I do that

PROCEDURE OnColumnClick(oList,Column)
	/*Column.SortOrder = 1*/
	oList:SortOnClick := -1/*exDefaultSort*/
	oList:Columns:Item("Sort"):SortOrder := 1/*SortAscending*/
	oList:SortOnClick := 1/*exUserSort*/
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:ColumnClick := {|Column| OnColumnClick(oList,Column)} /*Fired after the user clicks on column's header.*/

		oList:BeginUpdate()
		oList:SortOnClick := 1/*exUserSort*/
		oList:Columns():Add("Items")
		oList:Columns():Add("Sort"):Visible := .F.
		oItems := oList:Items()
			oItems:SetProperty("Caption",oItems:Add("Item 1 (3)"),1,3)
			oItems:SetProperty("Caption",oItems:Add("Item 2 (1)"),1,1)
			oItems:SetProperty("Caption",oItems:Add("Item 3 (2)"),1,2)
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
462
How can I sort by two-columns, one by date and one by time

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oColumns
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:SingleSort := .F.
		oColumns := oList:Columns()
			oColumns:Add("Index"):FormatColumn := "1 index ``"
			oColumns:Add("Date"):SortType := 2/*SortDate*/
			oColumn := oColumns:Add("Time")
				oColumn:SortType := 4/*SortTime*/
				oColumn:FormatColumn := "time(value)"
		oItems := oList:Items()
			h := oItems:Add(0)
			oItems:SetProperty("Caption",h,1,"01/01/2001")
			oItems:SetProperty("Caption",h,2,"01/01/2001 10:00:00")
			h := oItems:Add(0)
			oItems:SetProperty("Caption",h,1,"12/31/2000")
			oItems:SetProperty("Caption",h,2,"01/01/2001 10:00:00")
			h := oItems:Add(0)
			oItems:SetProperty("Caption",h,1,"01/01/2001")
			oItems:SetProperty("Caption",h,2,"01/01/2001 06:00:00")
			h := oItems:Add(0)
			oItems:SetProperty("Caption",h,1,"12/31/2000")
			oItems:SetProperty("Caption",h,2,"01/01/2001 08:00:00")
			h := oItems:Add(0)
			oItems:SetProperty("Caption",h,1,"01/01/2001")
			oItems:SetProperty("Caption",h,2,"01/01/2001 08:00:00")
			h := oItems:Add(0)
			oItems:SetProperty("Caption",h,1,"12/31/2000")
			oItems:SetProperty("Caption",h,2,"01/01/2001 06:00:00")
		oList:Layout := "multiplesort=" + CHR(34) + "C1:1 C2:1" + CHR(34) + ""
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
461
How can I connect to a DBF file
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oList
	LOCAL rs

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:ColumnAutoResize := .F.
		oList:ContinueColumnScroll := .F.
		oList:MarkSearchColumn := .F.
		rs := CreateObject("ADODB.Recordset")
			rs:Open("Select * From foxcode.DBF","Provider=vfpoledb;Data Source=C:\Program Files\Microsoft Visual FoxPro 9\",3/*adOpenStatic*/,3/*adLockOptimistic*/)
		oList:DataSource := rs
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
460
Does your control supports scrolling by touching the screen

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oList
	LOCAL rs

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:ColumnAutoResize := .F.
		rs := CreateObject("ADOR.Recordset")
			rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExList\Sample\Access\SAMPLE.ACCDB",3/*adOpenStatic*/,3/*adLockOptimistic*/)
		oList:DataSource := rs
		oList:ContinueColumnScroll := .T.
		oList:ScrollBySingleLine := .T.
		oList:AutoDrag := 4112/*exAutoDragScrollOnShortTouch+exAutoDragScroll*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
459
How can I enlarge the size of the control's scroll bars, for using on touch screens

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:ScrollBars := 15/*DisableBoth*/
		oList:ScrollWidth := 32
		oList:ScrollHeight := 32
		oList:ScrollButtonHeight := 32
		oList:ScrollButtonWidth := 32

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
458
Is there a syntax for conditional formatting of items, based on CellState/CellStateChange

PROCEDURE OnCellStateChanged(oList,Item,ColIndex)
	LOCAL oItems
	oItems := oList:Items()
		oItems:SetProperty("Caption",Item,2,oItems:CellState(Item,0))
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL var_ConditionalFormat
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:CellStateChanged := {|Item,ColIndex| OnCellStateChanged(oList,Item,ColIndex)} /*Fired after cell's state is changed.*/

		oList:BeginUpdate()
		oList:ShowFocusRect := .F.
		oList:MarkSearchColumn := .F.
		oList:SelBackMode := 1/*exTransparent*/
		var_ConditionalFormat := oList:ConditionalFormats:Add("%2 != 0")
			var_ConditionalFormat:Bold := .T.
			var_ConditionalFormat:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			var_ConditionalFormat:ApplyTo := -1/*exFormatToItems*/
		oColumn := oList:Columns():Add("")
			oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
			oColumn:Width := 16
			oColumn:AllowSizing := .F.
		oList:Columns():Add("Information")
		oList:Columns():Add("Hidden"):Visible := .F.
		oItems := oList:Items()
			oItems:SetProperty("Caption",oItems:Add(""),1,"This is a bit of text associated")
			h := oItems:Add("")
			oItems:SetProperty("Caption",h,1,"This is a bit of text associated")
			oItems:SetProperty("CellState",h,0,1)
			oItems:SetProperty("Caption",oItems:Add(""),1,"This is a bit of text associated")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
457
How can I display the caption bellow to picture

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:ScrollBySingleLine := .T.
		oList:SetProperty("HTMLPicture","p1","c:\exontrol\images\zipdisk.gif")
		oList:SetProperty("HTMLPicture","p2","c:\exontrol\images\auction.gif")
		oList:Columns():Add("Default")
		oItems := oList:Items()
			h := oItems:Add("<c><img>p1</img><br><c>your caption1")
			oItems:SetProperty("CellSingleLine",h,0,0/*exCaptionWordWrap*/)
			oItems:SetProperty("CaptionFormat",h,0,1/*exHTML*/)
			h := oItems:Add("<c><img>p2</img><br><c>your caption2")
			oItems:SetProperty("CellSingleLine",h,0,0/*exCaptionWordWrap*/)
			oItems:SetProperty("CaptionFormat",h,0,1/*exHTML*/)
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
456
How can I add a vertical padding

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:DrawGridLines := -1/*exAllLines*/
		oColumn := oList:Columns():Add("Padding")
			oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
			oColumn:SetProperty("Def",16/*exCellSingleLine*/,.F.)
			oColumn:SetProperty("Def",48/*exCellPaddingLeft*/,6)
			oColumn:SetProperty("Def",49/*exCellPaddingRight*/,6)
			oColumn:SetProperty("Def",50/*exCellPaddingTop*/,6)
			oColumn:SetProperty("Def",51/*exCellPaddingBottom*/,6)
		oItems := oList:Items()
			oItems:Add("padding")
			oItems:Add("padding")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
455
How do you embed HTML options into the anchor click string

PROCEDURE OnAnchorClick(oList,AnchorID,Options)
	DevOut( Transform(AnchorID,"") )
	DevOut( Transform(Options,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumns
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:AnchorClick := {|AnchorID,Options| OnAnchorClick(oList,AnchorID,Options)} /*Occurs when an anchor element is clicked.*/

		oList:BeginUpdate()
		oColumns := oList:Columns()
			oColumns:Add("Car"):SetProperty("Def",17/*exCaptionFormat*/,1)
		oItems := oList:Items()
			oItems:Add("<a mazda_1;options for 1>Mazda <b>1</b></a>")
			oItems:Add("<a mazda_2;options for 2>Mazda <b>2</b></a>")
			oItems:Add("<a mazda_3;options for 3a>Mazda <b>3.a</b></a>")
			oItems:Add("<a mazda_3;options for 3b>Mazda <b>3.b</b></a>")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
454
I have the rows with different background color, and when I select the item it takes the color of the SelBackColor, and therefore is no longer visible behind the color. Is there any option to make the item's color being visible (method 3)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAEGg4BVEIQAAYAQGKIYBkAKBQAGaAoDDMOQwQwAAxjGKEEwsACEIrjKCRShyCYZRhGcTSBCIZBqEqSZLiEZRQCWIAzATGYBRfIUEgjBM6ExwG78egBHp/ZpkACIJJAaRjHQdJxGKKMQB9DIhCZpeKhWgkKIJBzOEyBRC4ERBGqNGrsIgLEqWZpnWhaNpWXYTLyBN64LhuK46g53O6wLxvK6hEr2dJ/YBcIAOfghf4NQ7EMRxLC8Mw3BDvYDkOAABAIgI=")
		oList:SetProperty("SelBackColor",0x1fffffe)
		oList:ShowFocusRect := .F.
		oList:Columns():Add("Items")
		oItems := oList:Items()
			oItems:SetProperty("ItemBackColor",oItems:Add("red"),AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oItems:SetProperty("ItemBackColor",oItems:Add("blue"),AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,255 } )  , .F. ))
			oItems:SetProperty("ItemBackColor",oItems:Add("green"),AutomationTranslateColor( GraMakeRGBColor  ( { 0,255,0 } )  , .F. ))
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
453
I have the rows with different background color, and when I select the item it takes the color of the SelBackColor, and therefore is no longer visible behind the color. Is there any option to make the item's color being visible (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:SelBackMode := 1/*exTransparent*/
		oList:ShowFocusRect := .F.
		oList:Columns():Add("Items")
		oItems := oList:Items()
			oItems:SetProperty("ItemBackColor",oItems:Add("red"),AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oItems:SetProperty("ItemBackColor",oItems:Add("blue"),AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,255 } )  , .F. ))
			oItems:SetProperty("ItemBackColor",oItems:Add("green"),AutomationTranslateColor( GraMakeRGBColor  ( { 0,255,0 } )  , .F. ))
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
452
I have the rows with different background color, and when I select the item it takes the color of the SelBackColor, and therefore is no longer visible behind the color. Is there any option to make the item's color being visible (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:SetProperty("SelBackColor",oList:BackColor())
		oList:SetProperty("SelForeColor",oList:ForeColor())
		oList:ShowFocusRect := .T.
		oList:Columns():Add("Items")
		oItems := oList:Items()
			oItems:SetProperty("ItemBackColor",oItems:Add("red"),AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oItems:SetProperty("ItemBackColor",oItems:Add("blue"),AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,255 } )  , .F. ))
			oItems:SetProperty("ItemBackColor",oItems:Add("green"),AutomationTranslateColor( GraMakeRGBColor  ( { 0,255,0 } )  , .F. ))
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
451
I am using the FormatColumn property, but is it also possible to have a blank field when the value is '0'. I've tried the 'leading zero' flag in the FormatColumn, but that did not work

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:Columns():Add("Currency"):FormatColumn := "int(value) != 0 ? (value format `0||3|,`) : ``"
		oList:Items():Add(123456789)
		oList:Items():Add(1234)
		oList:Items():Add(0)
		oList:Items():Add(2345)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
450
Do you have a VB sample on how to use .FormatColumn to show this number '123456789' like '123,456,789'

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:Columns():Add("Currency"):FormatColumn := "value format `0||3|,`"
		oList:Items():Add(123456789)
		oList:Items():Add(1234)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
449
Is it possible to change the image while do OLE Drag and Drop operations

PROCEDURE OnOLEStartDrag(oList,Data,AllowedEffects)
	/*Data.SetData(Items.FocusItem)*/

RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:OLEStartDrag := {|Data,AllowedEffects| OnOLEStartDrag(oList,Data,AllowedEffects)} /*Occurs when the OLEDrag method is called.*/

		oList:Columns():Add("Default")
		oList:Items():Add("Item 1")
		oList:Items():Add("Item 2")
		oList:OLEDropMode := 1/*exOLEDropManual*/
		oList:SetProperty("HTMLPicture","OLEDragDropImage","C:\Program Files\Exontrol\ExList\Sample\VB\UNICODE\unicode.jpg")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
448
Is it possible to change the image while do OLE Drag and Drop operations

PROCEDURE OnOLEStartDrag(oList,Data,AllowedEffects)
	/*Data.SetData(Items.FocusItem)*/

RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:OLEStartDrag := {|Data,AllowedEffects| OnOLEStartDrag(oList,Data,AllowedEffects)} /*Occurs when the OLEDrag method is called.*/

		oList:Columns():Add("Default")
		oList:Items():Add("Item 1")
		oList:Items():Add("Item 2")
		oList:OLEDropMode := 1/*exOLEDropManual*/
		oList:VisualAppearance():Add(1,"C:\Program Files\Exontrol\ExG2antt\Sample\EBN\xpbselIcon.ebn")
		oList:SetProperty("Background",34/*exDragDropAfter*/,0x1000000)
		oList:SetProperty("Background",33/*exDragDropBefore*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
447
How can copy and paste the selection to Microsoft Word, any OLE compliant application, as a snapshot
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oList:SetProperty("HTMLPicture","p1","c:\exontrol\images\card.png")
		oList:SetProperty("HTMLPicture","p2","c:\exontrol\images\sun.png")
		oList:AutoDrag := 11/*exAutoDragCopySnapShot*/
		oList:ShowFocusRect := .F.
		oList:DefaultItemHeight := 26
		oList:Columns():Add("Task")
		oItems := oList:Items()
			oItems:SetProperty("CaptionFormat",oItems:Add("<img>p1:32</img> Group 1"),0,1/*exHTML*/)
			oItems:SetProperty("CaptionFormat",oItems:Add("<img>p2:32</img> Group 2"),0,1/*exHTML*/)
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
446
How can copy and paste the selection to Microsoft Word, any OLE compliant application, as a image

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList
	LOCAL rs

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:SetProperty("HTMLPicture","p1","c:\exontrol\images\card.png")
		oList:SetProperty("HTMLPicture","p2","c:\exontrol\images\sun.png")
		oList:HeaderHeight := 24
		oList:DefaultItemHeight := 48
		oList:DrawGridLines := -2/*0xfffffffc+exVLines*/
		oList:SetProperty("GridLineColor",AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oList:SelBackMode := 1/*exTransparent*/
		oList:ColumnAutoResize := .F.
		oList:ContinueColumnScroll := .F.
		rs := CreateObject("ADOR.Recordset")
			rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExList\Sample\Access\SAMPLE.ACCDB",3/*adOpenStatic*/,3/*adLockOptimistic*/)
		oList:DataSource := rs
		oList:Columns:Item(0):SetProperty("Def",17/*exCaptionFormat*/,1)
		oList:Columns:Item(0):FormatColumn := "value + ` <img>p` + (1 + (value mod 3 ) ) + `</img>`"
		oList:Columns:Item(0):Width := 112
		oList:AutoDrag := 10/*exAutoDragCopyImage*/
		oList:SingleSel := .F.
		oItems := oList:Items()
			oItems:SetProperty("SelectItem",1,.T.)
			oItems:SetProperty("SelectItem",2,.T.)
			oItems:SetProperty("SelectItem",3,.T.)
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
445
How can copy and paste the selection to Microsoft Word, Excel or any OLE compliant application, as a text

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList
	LOCAL rs

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:ColumnAutoResize := .F.
		oList:ContinueColumnScroll := .F.
		rs := CreateObject("ADOR.Recordset")
			rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExList\Sample\Access\SAMPLE.ACCDB",3/*adOpenStatic*/,3/*adLockOptimistic*/)
		oList:DataSource := rs
		oList:AutoDrag := 9/*exAutoDragCopyText*/
		oList:SingleSel := .F.
		oItems := oList:Items()
			oItems:SetProperty("SelectItem",1,.T.)
			oItems:SetProperty("SelectItem",3,.T.)
			oItems:SetProperty("SelectItem",4,.T.)
			oItems:SetProperty("SelectItem",5,.T.)
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
444
How can I change the row's position to another, by drag and drop. Is it possible

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:AutoDrag := 1/*exAutoDragPosition*/
		oList:Columns():Add("Task")
		oItems := oList:Items()
			oItems:Add("Item 1")
			oItems:Add("Item 2")
			oItems:Add("Item 3")
			oItems:Add("Item 4")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
443
Does your control support subscript or superscript, in HTML captions

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:Columns():Add("Column"):SetProperty("Def",17/*exCaptionFormat*/,1)
		oList:Items():Add("<sha ;;0>Event <b><font ;6><off -6>2<off 4>3<off 4>1")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
442
Is there any property I can save and restore automatically the current setting, column position, size, and so on (2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:Columns():Add("Column")
		oItems := oList:Items()
			oItems:Add("Item 1")
			oItems:Add("Item 2")
			oItems:Add("Item 3")
		oList:Layout := "Select=" + CHR(34) + "0" + CHR(34) + ";SingleSort=" + CHR(34) + "C0:2" + CHR(34) + ";Columns=1"
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
441
Is there any property I can save and restore automatically the current setting, column position, size, and so on (1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:Columns():Add("Column")
		oItems := oList:Items()
			oItems:Add("Item 1")
			oItems:Add("Item 2")
			oItems:Add("Item 3")
		oList:Layout := "gBjAAwAAuABmABpABsAB0ABlAByhoAPIAOEPAA9gYABoABQAgUEg0XN4AOcJicKkpujMbjsfkMFk0YhkQgUOjUEl8gjcGO0ok8KMULjEaGMcj08kQAO8oMkTNEtGwAGQAqc7gUlhh1ABtAEsk9GpEfhElgVcsMupNlnlonlaAFcr0shUsp8QPEtnVJqJhmcIhUMh0QiU5sYAqMngUSuEMw07k8Qv0SgVRrNEuVflF2jF5x9JyNEm0TjQijemyE0jE3t+YruauoAu4Az1qj9BzRn0UzksSnAA0xDjY6qnAw8OiUQ0dwzN0zWz2t7j8/xURAGNvWH6k8xlEhklhEI0O/6QAgI="
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
440
Is there any public method to export the selected data

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumns
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oColumns := oList:Columns()
			oColumns:Add("C1")
			oColumns:Add("C2"):FormatColumn := "1 index `A-Z`"
			oColumns:Add("C3"):FormatColumn := "100 index ``"
		oItems := oList:Items()
			oItems:Add("Item 1")
			oItems:SetProperty("SelectItem",oItems:Add("Item 2"),.T.)
			oItems:Add("Item 3")
		oList:EndUpdate()
		DevOut( "Export CSV Selected Items Only:" )
		DevOut( Transform(oList:Export("","sel"),"") )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
439
How can I change the visual aspect of the links in the sort bar

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn,oColumn1
	LOCAL oList
	LOCAL rs

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:ColumnAutoResize := .F.
		rs := CreateObject("ADOR.Recordset")
			rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExList\Sample\Access\SAMPLE.ACCDB",3/*adOpenStatic*/,3/*adLockOptimistic*/)
		oList:DataSource := rs
		oList:SortBarHeight := 24
		oList:HeaderHeight := 24
		oList:SetProperty("BackColorSortBar",AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oList:SetProperty("BackColorSortBarCaption",oList:BackColor())
		oList:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAEGg4BdsIQAAYAQGKIYBkAKBQAGaAoDDgNw0QwAAxjMK0EwsACEIrjKCRShyCYZRhGcTSBCIZBqEqSZLiEZRQiiCYsS5GQBSFDcOwHGyQYDkCQpAAWL4tCyMc7QHKAWhrEAbJjgQYJUh+TQAAZCIJRXRQAL/K6rKwnSCQIgkUBpGKdBynEYoYxAfyESCJWyIahWAwoQjUMB1HLQAAxC5kKbkIxyBABFBdVjVeBYG78Bz+ABjEovbAMEwPBqAMwmIAZDheA4FR4AGhTXKcbxrFaXZSzKckPRoADSZq1Sg5LjDJI2ABqU6ABqNLZtJKsZS4apABrWeZ3Q7QMLdFTwA4PH6EZhxXAYbTVeaPZjQIBAgI")
		oList:SortBarVisible := .T.
		oList:SortBarCaption := "Drag a <b>column</b> header here to group by that column."
		oColumn := oList:Columns:Item(1)
			oColumn:Alignment := 1/*CenterAlignment*/
			oColumn:SetProperty("Def",4/*exCellBackColor*/,15790320)
			oColumn:SortOrder := -1/*0xfffffffc+SortDescending+SortAscending*/
		oColumn1 := oList:Columns:Item(5)
			oColumn1:Alignment := 1/*CenterAlignment*/
			oColumn1:SetProperty("Def",4/*exCellBackColor*/,16119285)
			oColumn1:SortOrder := -1/*0xfffffffc+SortDescending+SortAscending*/
		oList:SetProperty("Background",28/*exSortBarLinkColor*/,0x1000000)
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
438
How can I have a case-insensitive filter (exFilterDoCaseSensitive flag is not set)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn,oColumn1
	LOCAL oColumns
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:MarkSearchColumn := .F.
		oColumns := oList:Columns()
			oColumn := oColumns:Add("Car")
				oColumn:DisplayFilterButton := .T.
				oColumn:FilterType := 240/*exFilter*/
				oColumn:Filter := "MAZDA"
			oColumn1 := oColumns:Add("Equipment")
				oColumn1:DisplayFilterButton := .T.
				oColumn1:DisplayFilterPattern := .F.
				oColumn1:CustomFilter := "Air Bag||*Air Bag*|||Air condition||*Air condition*|||ABS||*ABS*|||ESP||*ESP*"
				oColumn1:FilterType := 3/*exPattern*/
				oColumn1:Filter := "AIR BAG"
		oItems := oList:Items()
			oItems:SetProperty("Caption",oItems:Add("Mazda"),1,"Air Bag")
			oItems:SetProperty("Caption",oItems:Add("Toyota"),1,"Air Bag,Air condition")
			oItems:SetProperty("Caption",oItems:Add("Ford"),1,"Air condition")
			oItems:SetProperty("Caption",oItems:Add("Nissan"),1,"Air Bag,ABS,ESP")
			oItems:SetProperty("Caption",oItems:Add("Mazda"),1,"Air Bag, ABS,ESP")
			oItems:SetProperty("Caption",oItems:Add("Mazda"),1,"ABS,ESP")
		oList:ApplyFilter()
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
437
How can I have a case-sensitive filter

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn,oColumn1
	LOCAL oColumns
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:MarkSearchColumn := .F.
		oColumns := oList:Columns()
			oColumn := oColumns:Add("Car")
				oColumn:DisplayFilterButton := .T.
				oColumn:FilterType := 496/*exFilterDoCaseSensitive+exFilter*/
				oColumn:Filter := "Mazda"
			oColumn1 := oColumns:Add("Equipment")
				oColumn1:DisplayFilterButton := .T.
				oColumn1:DisplayFilterPattern := .F.
				oColumn1:CustomFilter := "Air Bag||*Air Bag*|||Air condition||*Air condition*|||ABS||*ABS*|||ESP||*ESP*"
				oColumn1:FilterType := 259/*exFilterDoCaseSensitive+exPattern*/
				oColumn1:Filter := "Air Bag"
		oItems := oList:Items()
			oItems:SetProperty("Caption",oItems:Add("Mazda"),1,"Air Bag")
			oItems:SetProperty("Caption",oItems:Add("Toyota"),1,"Air Bag,Air condition")
			oItems:SetProperty("Caption",oItems:Add("Ford"),1,"Air condition")
			oItems:SetProperty("Caption",oItems:Add("Nissan"),1,"Air Bag,ABS,ESP")
			oItems:SetProperty("Caption",oItems:Add("Mazda"),1,"Air Bag, ABS,ESP")
			oItems:SetProperty("Caption",oItems:Add("Mazda"),1,"ABS,ESP")
		oList:ApplyFilter()
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
436
I have several columns, but noticed that the filter is using AND between columns, but I need OR clause for filtering. Is it possible

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn,oColumn1
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oColumn := oList:Columns():Add("Item")
			oColumn:DisplayFilterButton := .T.
			oColumn:DisplayFilterPattern := .F.
			oColumn:Filter := "Child 1"
			oColumn:FilterType := 240/*exFilter*/
		oColumn1 := oList:Columns():Add("Date")
			oColumn1:DisplayFilterButton := .T.
			oColumn1:DisplayFilterPattern := .F.
			oColumn1:DisplayFilterDate := .T.
			oColumn1:FilterList := 9474/*exShowExclude+exShowFocusItem+exShowCheckBox+exNoItems*/
			oColumn1:Filter := Transform("12/28/2010","")
			oColumn1:FilterType := 4/*exDate*/
		oList:FilterCriteria := "%0 or %1"
		oList:SetProperty("Description",23/*exFilterBarOr*/,"<font ;18><fgcolor=FF0000>or</fgcolor></font>")
		oList:SetProperty("Description",11/*exFilterBarAnd*/,"<font ;18><fgcolor=FF0000>and</fgcolor></font>")
		oItems := oList:Items()
			h := oItems:Add("Root 1")
			oItems:SetProperty("Caption",oItems:Add("Child 1"),1,"12/27/2010")
			oItems:SetProperty("Caption",oItems:Add("Child 2"),1,"12/28/2010")
			h := oItems:Add("Root 2")
			oItems:SetProperty("Caption",oItems:Add("Child 1"),1,"12/29/2010")
			oItems:SetProperty("Caption",oItems:Add("Child 2"),1,"12/30/2010")
		oList:ApplyFilter()
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
435
Is it possible exclude the dates being selected in the drop down filter window

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oColumn := oList:Columns():Add("Date")
			oColumn:SortType := 2/*SortDate*/
			oColumn:DisplayFilterButton := .T.
			oColumn:DisplayFilterPattern := .F.
			oColumn:DisplayFilterDate := .T.
			oColumn:FilterList := 9474/*exShowExclude+exShowFocusItem+exShowCheckBox+exNoItems*/
		oItems := oList:Items()
			oItems:Add("12/27/2010")
			oItems:Add("12/28/2010")
			oItems:Add("12/29/2010")
			oItems:Add("12/30/2010")
			oItems:Add("12/31/2010")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
434
How can I display a calendar control inside the drop down filter window

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oColumn := oList:Columns():Add("Date")
			oColumn:SortType := 2/*SortDate*/
			oColumn:DisplayFilterButton := .T.
			oColumn:DisplayFilterPattern := .F.
			oColumn:DisplayFilterDate := .T.
			oColumn:FilterList := 1282/*exShowFocusItem+exShowCheckBox+exNoItems*/
		oItems := oList:Items()
			oItems:Add("12/27/2010")
			oItems:Add("12/28/2010")
			oItems:Add("12/29/2010")
			oItems:Add("12/30/2010")
			oItems:Add("12/31/2010")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
433
Is it possible to include the dates as checkb-boxes in the drop down filter window

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oColumn := oList:Columns():Add("Dates")
			oColumn:SortType := 2/*SortDate*/
			oColumn:DisplayFilterButton := .T.
			oColumn:DisplayFilterPattern := .T.
			oColumn:DisplayFilterDate := .T.
			oColumn:FilterList := 1280/*exShowFocusItem+exShowCheckBox*/
			oColumn:Filter := "to 12/27/2010"
			oColumn:FilterType := 4/*exDate*/
		oItems := oList:Items()
			oItems:Add("12/27/2010")
			oItems:Add("12/28/2010")
			oItems:Add("12/29/2010")
			oItems:Add("12/30/2010")
			oItems:Add("12/31/2010")
		oList:ApplyFilter()
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
432
How can I filter items for dates before a specified date

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oColumn := oList:Columns():Add("Dates")
			oColumn:SortType := 2/*SortDate*/
			oColumn:DisplayFilterButton := .T.
			oColumn:DisplayFilterPattern := .T.
			oColumn:DisplayFilterDate := .T.
			oColumn:FilterList := 1026/*exShowFocusItem+exNoItems*/
			oColumn:Filter := "to 12/27/2010"
			oColumn:FilterType := 4/*exDate*/
		oItems := oList:Items()
			oItems:Add("12/27/2010")
			oItems:Add("12/28/2010")
			oItems:Add("12/29/2010")
			oItems:Add("12/30/2010")
			oItems:Add("12/31/2010")
		oList:ApplyFilter()
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
431
Is it possible to filter dates

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oColumn := oList:Columns():Add("Dates")
			oColumn:SortType := 2/*SortDate*/
			oColumn:DisplayFilterButton := .T.
			oColumn:DisplayFilterPattern := .T.
			oColumn:DisplayFilterDate := .T.
			oColumn:FilterList := 1026/*exShowFocusItem+exNoItems*/
		oItems := oList:Items()
			oItems:Add("12/27/2010")
			oItems:Add("12/28/2010")
			oItems:Add("12/29/2010")
			oItems:Add("12/30/2010")
			oItems:Add("12/31/2010")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
430
Is it possible to change the Exclude field name to something different, in the drop down filter window

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:SetProperty("Description",25/*exFilterBarExclude*/,"Leaving out")
		oColumn := oList:Columns():Add("Items")
			oColumn:DisplayFilterButton := .T.
			oColumn:DisplayFilterPattern := .F.
			oColumn:FilterList := 9472/*exShowExclude+exShowFocusItem+exShowCheckBox*/
		oItems := oList:Items()
			h := oItems:Add("Root 1")
			oItems:Add("Child 1")
			oItems:Add("Child 2")
			h := oItems:Add("Root 2")
			oItems:Add("Child 1")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
429
How can I display the Exclude field in the drop down filter window

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oColumn := oList:Columns():Add("Items")
			oColumn:DisplayFilterButton := .T.
			oColumn:DisplayFilterPattern := .F.
			oColumn:FilterList := 9472/*exShowExclude+exShowFocusItem+exShowCheckBox*/
		oItems := oList:Items()
			h := oItems:Add("Root 1")
			oItems:Add("Child 1")
			oItems:Add("Child 2")
			h := oItems:Add("Root 2")
			oItems:Add("Child 1")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
428
Is it possible to show and ensure the focused item from the control, in the drop down filter window

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oColumn := oList:Columns():Add("Items")
			oColumn:DisplayFilterButton := .T.
			oColumn:DisplayFilterPattern := .F.
			oColumn:FilterList := 1280/*exShowFocusItem+exShowCheckBox*/
		oItems := oList:Items()
			h := oItems:Add("Root 1")
			oItems:Add("Child 1")
			oItems:Add("Child 2")
			h := oItems:Add("Root 2")
			oItems:Add("Child 1")
			oItems:SetProperty("SelectItem",oItems:Add("Child 2"),.T.)
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
427
Is it possible to show only blanks items with no listed items from the control

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oColumn := oList:Columns():Add("Items")
			oColumn:DisplayFilterButton := .T.
			oColumn:DisplayFilterPattern := .F.
			oColumn:FilterList := 16386/*exShowBlanks+exNoItems*/
		oItems := oList:Items()
			h := oItems:Add("Root 1")
			oItems:Add("Child 1")
			oItems:Add("Child 2")
			h := oItems:Add("Root 2")
			oItems:Add("Child 1")
			oItems:Add("Child 2")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
426
How can I include the blanks items in the drop down filter window

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oColumn := oList:Columns():Add("Items")
			oColumn:DisplayFilterButton := .T.
			oColumn:DisplayFilterPattern := .F.
			oColumn:FilterList := 16640/*exShowBlanks+exShowCheckBox*/
		oItems := oList:Items()
			h := oItems:Add("Root 1")
			oItems:Add("Child 1")
			oItems:Add("Child 2")
			h := oItems:Add("Root 2")
			oItems:Add("Child 1")
			oItems:Add("Child 2")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
425
How can I select multiple items in the drop down filter window, using check-boxes

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oColumn := oList:Columns():Add("Items")
			oColumn:DisplayFilterButton := .T.
			oColumn:DisplayFilterPattern := .F.
			oColumn:FilterList := 256/*exShowCheckBox*/
		oItems := oList:Items()
			h := oItems:Add("Root 1")
			oItems:Add("Child 1")
			oItems:Add("Child 2")
			h := oItems:Add("Root 2")
			oItems:Add("Child 1")
			oItems:Add("Child 2")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
424
Is it possible to allow a single item being selected in the drop down filter window

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oColumn := oList:Columns():Add("Items")
			oColumn:DisplayFilterButton := .T.
			oColumn:DisplayFilterPattern := .F.
			oColumn:FilterList := 128/*exSingleSel*/
		oItems := oList:Items()
			h := oItems:Add("Root 1")
			oItems:Add("Child 1")
			oItems:Add("Child 2")
			h := oItems:Add("Root 2")
			oItems:Add("Child 1")
			oItems:Add("Child 2")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
423
How can I display no (All) item in the drop down filter window

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:SetProperty("Description",0/*exFilterBarAll*/,"")
		oColumn := oList:Columns():Add("Items")
			oColumn:DisplayFilterButton := .T.
			oColumn:DisplayFilterPattern := .T.
			oColumn:FilterList := 2/*exNoItems*/
		oItems := oList:Items()
			h := oItems:Add("Root 1")
			oItems:Add("Child 1")
			oItems:Add("Child 2")
			h := oItems:Add("Root 2")
			oItems:Add("Child 1")
			oItems:Add("Child 2")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
422
Is it possible to display no items in the drop down filter window, so only the pattern is visible

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oColumn := oList:Columns():Add("Items")
			oColumn:DisplayFilterButton := .T.
			oColumn:DisplayFilterPattern := .T.
			oColumn:FilterList := 2/*exNoItems*/
		oItems := oList:Items()
			h := oItems:Add("Root 1")
			oItems:Add("Child 1")
			oItems:Add("Child 2")
			h := oItems:Add("Root 2")
			oItems:Add("Child 1")
			oItems:Add("Child 2")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
421
How can I sort the value gets listed in the drop down filter window

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn,oColumn1
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:MarkSearchColumn := .F.
		oList:SetProperty("Description",0/*exFilterBarAll*/,"")
		oList:SetProperty("Description",1/*exFilterBarBlanks*/,"")
		oList:SetProperty("Description",2/*exFilterBarNonBlanks*/,"")
		oColumn := oList:Columns():Add("P1")
			oColumn:DisplayFilterButton := .T.
			oColumn:DisplayFilterPattern := .F.
			oColumn:FilterList := 16/*exSortItemsDesc*/
		oColumn1 := oList:Columns():Add("P2")
			oColumn1:DisplayFilterButton := .T.
			oColumn1:DisplayFilterPattern := .F.
			oColumn1:FilterList := 32/*exSortItemsAsc*/
		oItems := oList:Items()
			h := oItems:Add("Z3")
			oItems:SetProperty("Caption",h,1,"C")
			oItems:SetProperty("Caption",oItems:Add("Z1"),1,"B")
			oItems:SetProperty("Caption",oItems:Add("Z2"),1,"A")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
420
How can I add or change the padding (spaces) for captions in the control's header

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:Columns():Add("Padding-Left"):SetProperty("Def",52/*exHeaderPaddingLeft*/,18)
		oColumn := oList:Columns():Add("Padding-Right")
			oColumn:SetProperty("Def",53/*exHeaderPaddingRight*/,18)
			oColumn:HeaderAlignment := 2/*RightAlignment*/
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
419
Do you have any plans to add cell spacing and cell padding to the cells

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:DrawGridLines := -2/*0xfffffffc+exVLines*/
		oColumn := oList:Columns():Add("Padding-Left")
			oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
			oColumn:SetProperty("Def",48/*exCellPaddingLeft*/,18)
		oList:Columns():Add("No-Padding"):SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
		oList:Columns():Add("Empty"):Position := 0
		oItems := oList:Items()
			oItems:SetProperty("Caption",oItems:Add("Item A.1"),1,"Item A.2")
			oItems:SetProperty("Caption",oItems:Add("Item B.1"),1,"Item B.2")
			oItems:SetProperty("Caption",oItems:Add("Item C.1"),1,"Item C.2")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
418
Is it possible display numbers in the same format no matter of regional settings in the control panel

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:Columns():Add("Def"):SetProperty("Def",17/*exCaptionFormat*/,1)
		oItems := oList:Items()
			h := oItems:Add(100000.27)
			oItems:SetProperty("FormatCell",h,0,"(value format '') +  ' <fgcolor=808080>(default positive)'")
			h := oItems:Add(100000.27)
			oItems:SetProperty("FormatCell",h,0,"(value format '2|.|3|,|1|1')")
			h := oItems:Add(-100000.27)
			oItems:SetProperty("FormatCell",h,0,"(value format '') +  ' <fgcolor=808080>(default negative)'")
			h := oItems:Add(-100000.27)
			oItems:SetProperty("FormatCell",h,0,"(value format '2|.|3|,|1|1')")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
417
Is it possible to add a 0 for numbers less than 1 instead .7 to show 0.8

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:Columns():Add("Def"):SetProperty("Def",17/*exCaptionFormat*/,1)
		oItems := oList:Items()
			h := oItems:Add(0.27)
			oItems:SetProperty("FormatCell",h,0,"(value format '') +  ' <fgcolor=808080>(default)'")
			h := oItems:Add(0.27)
			oItems:SetProperty("FormatCell",h,0,"(value format '|||||0') +  ' <fgcolor=808080>(Display no leading zeros)'")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
416
How can I specify the format for negative numbers

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:Columns():Add("Def"):SetProperty("Def",17/*exCaptionFormat*/,1)
		oItems := oList:Items()
			h := oItems:Add(-100000.27)
			oItems:SetProperty("FormatCell",h,0,"(value format '') +  ' <fgcolor=808080>(default)'")
			h := oItems:Add(-100000.27)
			oItems:SetProperty("FormatCell",h,0,"(value format '||||1') +  ' <fgcolor=808080>(Negative sign, number; for example, -1.1)'")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
415
Is it possible to change the grouping character when display numbers

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:Columns():Add("Def"):SetProperty("Def",17/*exCaptionFormat*/,1)
		oItems := oList:Items()
			h := oItems:Add(100000.27)
			oItems:SetProperty("FormatCell",h,0,"(value format '') +  ' <fgcolor=808080>(default)'")
			h := oItems:Add(100000.27)
			oItems:SetProperty("FormatCell",h,0,"(value format '|||-') +  ' <fgcolor=808080>(grouping character is -)'")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
414
How can I display numbers with 2 digits in each group

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:Columns():Add("Def"):SetProperty("Def",17/*exCaptionFormat*/,1)
		oItems := oList:Items()
			h := oItems:Add(100000.27)
			oItems:SetProperty("FormatCell",h,0,"(value format '') +  ' <fgcolor=808080>(default)'")
			h := oItems:Add(100000.27)
			oItems:SetProperty("FormatCell",h,0,"(value format '||2') +  ' <fgcolor=808080>(grouping by 2 digits)'")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
413
How can I display my numbers using a different decimal separator

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:Columns():Add("Def"):SetProperty("Def",17/*exCaptionFormat*/,1)
		oItems := oList:Items()
			h := oItems:Add(100.27)
			oItems:SetProperty("FormatCell",h,0,"(value format '') +  ' <fgcolor=808080>(default)'")
			h := oItems:Add(100.27)
			oItems:SetProperty("FormatCell",h,0,"(value format '|;') +  ' <fgcolor=808080>(decimal separator is <b>;</b>)'")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
412
Is it possible to display the numbers using 3 (three) digits

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:Columns():Add("Def"):SetProperty("Def",17/*exCaptionFormat*/,1)
		oItems := oList:Items()
			h := oItems:Add(100.27)
			oItems:SetProperty("FormatCell",h,0,"(value format '') +  ' <fgcolor=808080>(default)'")
			h := oItems:Add(100.27)
			oItems:SetProperty("FormatCell",h,0,"(value format '3') +  ' <fgcolor=808080>(3 digits)'")
			h := oItems:Add(100.27)
			oItems:SetProperty("FormatCell",h,0,"(value format 2) +  '  <fgcolor=808080>(2 digits)'")
			h := oItems:Add(100.27)
			oItems:SetProperty("FormatCell",h,0,"(value format 1) +  ' <fgcolor=808080>(1 digit)'")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
411
Is it possible to format numbers

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn,oColumn1,oColumn2,oColumn3
	LOCAL oColumns
	LOCAL oItems
	LOCAL oList
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:MarkSearchColumn := .F.
		oList:SetProperty("SelBackColor",oList:BackColor())
		oList:SetProperty("SelForeColor",oList:ForeColor())
		oList:ShowFocusRect := .T.
		oColumns := oList:Columns()
			oColumns:Add("Name")
			oColumn := oColumns:Add("A")
				oColumn:SortType := 1/*SortNumeric*/
				oColumn:AllowSizing := .F.
				oColumn:Width := 36
				oColumn:FormatColumn := "len(value) ? value + ' +'"
			oColumn1 := oColumns:Add("B")
				oColumn1:SortType := 1/*SortNumeric*/
				oColumn1:AllowSizing := .F.
				oColumn1:Width := 36
				oColumn1:FormatColumn := "len(value) ? value + ' +'"
			oColumn2 := oColumns:Add("C")
				oColumn2:SortType := 1/*SortNumeric*/
				oColumn2:AllowSizing := .F.
				oColumn2:Width := 36
				oColumn2:FormatColumn := "len(value) ? value + ' ='"
			oColumn3 := oColumns:Add("A+B+C")
				oColumn3:SortType := 1/*SortNumeric*/
				oColumn3:Width := 64
				oColumn3:ComputedField := "dbl(%1)+dbl(%2)+dbl(%3)"
				oColumn3:FormatColumn := "type(value) in (0,1) ? 'null' : ( dbl(value)<0 ? '<fgcolor=FF0000>'+ (value format '2|.|3|,|1' ) : (dbl(value)>0 ? '<fgcolor=0000FF>+'+(value format '2|.|3|,' ): '0.00') )"
				oColumn3:SetProperty("Def",17/*exCaptionFormat*/,1)
		oItems := oList:Items()
			h := oItems:Add("Item")
			oItems:SetProperty("CaptionFormat",h,4,2/*exComputedField*/)
			h := oItems:Add("Item 1")
			oItems:SetProperty("Caption",h,1,7)
			oItems:SetProperty("Caption",h,2,3)
			oItems:SetProperty("Caption",h,3,1)
			h := oItems:Add("Item 2")
			oItems:SetProperty("Caption",h,1,-2)
			oItems:SetProperty("Caption",h,2,-2)
			oItems:SetProperty("Caption",h,3,-4)
			h := oItems:Add("Item 3")
			oItems:SetProperty("Caption",h,1,2)
			oItems:SetProperty("Caption",h,2,2)
			oItems:SetProperty("Caption",h,3,-4)
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
410
Is it possible background color displayed when the mouse passes over an item

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:Columns():Add("Def")
		oList:SetProperty("HotBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,128 } )  , .F. ))
		oList:SetProperty("HotForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oItems := oList:Items()
			oItems:Add("Item A")
			oItems:Add("Item B")
			oItems:Add("Item C")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
409
Is it possible to specify the cell's value but still want to display some formatted text instead the value

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oColumns
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:MarkSearchColumn := .F.
		oColumns := oList:Columns()
			oColumns:Add("Name")
			oColumn := oColumns:Add("Values")
				oColumn:SortType := 1/*SortNumeric*/
				oColumn:AllowSizing := .F.
				oColumn:Width := 64
				oColumn:FormatColumn := "((0:=dbl(value)) < 10? '<fgcolor=808080><font ;7>' :'<b>') + currency(=:0)"
				oColumn:SetProperty("Def",17/*exCaptionFormat*/,1)
		oItems := oList:Items()
			oItems:SetProperty("FormatCell",oItems:Add("Item A"),1,"`<none>`")
			oItems:SetProperty("Caption",oItems:Add("Item 1"),1,10)
			oItems:SetProperty("Caption",oItems:Add("Item 2"),1,15)
			oItems:SetProperty("Caption",oItems:Add("Item 3"),1,25)
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
408
I am using the FormatColumn to display the current currency, but would like hide some values. Is it possible

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oColumns
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:MarkSearchColumn := .F.
		oColumns := oList:Columns()
			oColumns:Add("Name")
			oColumn := oColumns:Add("Values")
				oColumn:SortType := 1/*SortNumeric*/
				oColumn:AllowSizing := .F.
				oColumn:Width := 64
				oColumn:FormatColumn := "((0:=dbl(value)) < 10? '<fgcolor=808080><font ;7>' :'<b>') + currency(=:0)"
				oColumn:SetProperty("Def",17/*exCaptionFormat*/,1)
		oItems := oList:Items()
			oItems:SetProperty("FormatCell",oItems:Add("Item A"),1," ")
			oItems:SetProperty("Caption",oItems:Add("Item 1"),1,10)
			oItems:SetProperty("Caption",oItems:Add("Item 2"),1,15)
			oItems:SetProperty("Caption",oItems:Add("Item 3"),1,25)
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
407
I am using the FormatColumn to format my columns. Is it possible to ignore the SelForeColor, so the foreground color for selected items does not override my settings

PROCEDURE OnSelectionChanged(oList)
	LOCAL oItems
	oItems := oList:Items()
		oItems:ClearItemBackColor(-1)
		oItems:SetProperty("ItemBackColor",oItems:SelectedItem(0),AutomationTranslateColor( GraMakeRGBColor  ( { 128,255,255 } )  , .F. ))
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oColumns
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:SelectionChanged := {|| OnSelectionChanged(oList)} /*Fired after a new item is selected.*/

		oList:BeginUpdate()
		oList:MarkSearchColumn := .F.
		oList:SetProperty("SelForeColor",oList:ForeColor())
		oList:SetProperty("SelBackColor",oList:BackColor())
		oList:ShowFocusRect := .F.
		oColumns := oList:Columns()
			oColumn := oColumns:Add("Format")
				oColumn:FormatColumn := "type(value) in (0,1) ? 'null' : ( dbl(value)<0 ? '<fgcolor=FF0000>'+ (value format '2|.|3|,|1' ) : (dbl(value)>0 ? '<fgcolor=0000FF>+'+(value format '2|.|3|,' ): '0.00') )"
				oColumn:SetProperty("Def",17/*exCaptionFormat*/,1)
		oItems := oList:Items()
			oItems:Add(10)
			oItems:Add(-8)
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
406
Is it possible to change the height for all items at once

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:Columns():Add("Items")
		oItems := oList:Items()
			oItems:Add("Item 1")
			oItems:Add("Item 2")
			oItems:Add("Item 3")
			oItems:Add("Item 4")
		oList:EndUpdate()
		oList:DefaultItemHeight := 12
		oList:Items():SetProperty("ItemHeight",-1,12)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
405
How can I change the shape of the line to be shown when user drag and drop data over the control

PROCEDURE OnOLEStartDrag(oList,Data,AllowedEffects)
	/*Data.SetData("data to be dragged")*/

RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:OLEStartDrag := {|Data,AllowedEffects| OnOLEStartDrag(oList,Data,AllowedEffects)} /*Occurs when the OLEDrag method is called.*/

		oList:OLEDropMode := 1/*exOLEDropManual*/
		oList:VisualAppearance():Add(1,"C:\Program Files\Exontrol\ExList\Sample\VB\DragDrop\insert_bottom.ebn")
		oList:SetProperty("Background",96/*exListOLEDropPosition*/,0x1000000)
		oList:Columns():Add("Default")
		oItems := oList:Items()
			oItems:Add("Item 1")
			oItems:Add("Item 2")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
404
How can I highlight the item from cursor when the user drag and drop data over the control

PROCEDURE OnOLEStartDrag(oList,Data,AllowedEffects)
	/*Data.SetData("data to be dragged")*/

RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:OLEStartDrag := {|Data,AllowedEffects| OnOLEStartDrag(oList,Data,AllowedEffects)} /*Occurs when the OLEDrag method is called.*/

		oList:OLEDropMode := 1/*exOLEDropManual*/
		oList:SetProperty("Background",96/*exListOLEDropPosition*/,AutomationTranslateColor( GraMakeRGBColor  ( { 1,0,0 } )  , .F. ))
		oList:Columns():Add("Default")
		oItems := oList:Items()
			oItems:Add("Item 1")
			oItems:Add("Item 2")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
403
How can I start drag and drop items

PROCEDURE OnOLEStartDrag(oList,Data,AllowedEffects)
	/*Data.SetData("to be carried by drag and drop")*/
	AllowedEffects := 1
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:OLEStartDrag := {|Data,AllowedEffects| OnOLEStartDrag(oList,Data,AllowedEffects)} /*Occurs when the OLEDrag method is called.*/

		oList:BeginUpdate()
		oList:OLEDropMode := 1/*exOLEDropManual*/
		oList:Columns():Add("Default")
		oItems := oList:Items()
			oItems:Add("Item 1")
			oItems:Add("Item 2")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
402
When I'm trying to show string with "line break" character (vbCrLF) in a textbox, it shows 2 squares. Is there any way to hide these squares

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn,oColumn1,oColumn2
	LOCAL oColumns
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oColumns := oList:Columns()
			oColumns:Add("Value")
			oColumn := oColumns:Add("CellSingleLine = False")
				oColumn:ComputedField := "%0"
				oColumn:SetProperty("Def",16/*exCellSingleLine*/,.F.)
			oColumn1 := oColumns:Add("FormatColumn/replace CRLF")
				oColumn1:ComputedField := "%0"
				oColumn1:FormatColumn := "value replace `\r\n` with ``"
			oColumn2 := oColumns:Add("FormatColumn/replace TAB,CRLF")
				oColumn2:ComputedField := "%0"
				oColumn2:FormatColumn := "(value replace `\t` with ``) replace `\r\n` with ``"
		oItems := oList:Items()
			oItems:Add("a\ta\r\nb\tb")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
401
The Column.Alignment property does not seem to work for cells with images in them. What can be done

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oColumn
	LOCAL oItems
	LOCAL oList

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oList := XbpActiveXControl():new( oForm:drawingArea )
	oList:CLSID  := "Exontrol.List.1" /*{1B0CA5A8-2107-4460-BBEE-F25F8801B2F6}*/
	oList:create(,, {10,60},{610,370} )

		oList:BeginUpdate()
		oList:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oList:DrawGridLines := -1/*exAllLines*/
		oList:HeaderHeight := 24
		oList:DefaultItemHeight := 24
		oColumn := oList:Columns():Add("Image")
			oColumn:AllowSizing := .F.
			oColumn:Width := 32
			oColumn:HTMLCaption := "<img>1</img>"
			oColumn:HeaderAlignment := 1/*CenterAlignment*/
			oColumn:Alignment := 1/*CenterAlignment*/
			oColumn:SetProperty("Def",17/*exCaptionFormat*/,1)
		oList:Columns():Add("Rest")
		oItems := oList:Items()
			oItems:Add("<img>1</img>")
			oItems:Add("<img>2</img>")
			oItems:Add("<img>3</img>")
		oList:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN